{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read simulation input from a file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is often useful to read simulation inputs from a file. Let's do this for our standard tank system.\n", "\n", "\n", "\n", "\\begin{align}\n", "F_{out} &= kh\\\\\n", "\\frac{\\mathrm{d}h}{\\mathrm{d}t} &= \\frac{1}{A}\\left(F_{in} - F_{out}\\right)\\\\\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we define the parameters of the system" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "K = 1\n", "A = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, we'll read the values of $F_{in}$ from an Excel file using `pandas.read_excel`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import pandas" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeFin
001.0
152.0
2102.0
3151.5
4201.0
5252.0
6302.0
\n", "
" ], "text/plain": [ " Time Fin\n", "0 0 1.0\n", "1 5 2.0\n", "2 10 2.0\n", "3 15 1.5\n", "4 20 1.0\n", "5 25 2.0\n", "6 30 2.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pandas.read_excel('../../assets/tankdata.xlsx')\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll set this function up to interpolate on the above table for the value of $F_in$ given a known time." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def Fin(t):\n", " return numpy.interp(t, df.Time, df.Fin)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can test for one value at a time" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Fin(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`interp` also accepts vector inputs:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "tspan = (0, 30)\n", "t = numpy.linspace(*tspan)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(t, Fin(t))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we're ready to define our differential equation function:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def dhdt(t, h):\n", " Fout = K*h\n", " return 1/A*(Fin(t) - Fout)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "h0 = 1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import scipy.integrate" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "sol = scipy.integrate.solve_ivp(dhdt, tspan, [h0], t_eval=t)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(sol.t, sol.y.T)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }